﻿using System;
using System.Web.UI.WebControls;
using ClickLand.CorporacionPlaza.Presentacion.Contratos.AdministracionEstablecimiento;
using ClickLand.CorporacionPlaza.Presentacion.Presentadores.AdministracionEstablecimiento;

namespace AdministracionEstablecimiento
{
    public partial class AgregarEstablecimiento : System.Web.UI.Page , IAgregarEstablecimiento
    {
        #region atributos

        /// <summary> Objeto que posee la declaracion del presentador de la vista </summary>
        private PresentadorAgregarEstablecimiento _presentador; 

        #endregion

        #region eventos
        /// <summary>Evento de inicializacion de la página.</summary>
        /// <param name="sender">Objeto que generó el evento.</param>
        /// <param name="e">Argumento del evento.</param>
        protected void Page_Init(object sender, EventArgs e)
        {
            _presentador = new PresentadorAgregarEstablecimiento(this);
        }

        /// <summary> Metodo que se ejecuta cuando se carga la pagina. </summary>
        /// <param name="sender">Objeto que generó el evento.</param>
        /// <param name="e">Argumento del evento.</param>
        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
                _presentador.CargarPagina();
        }


        /// <summary> Metodo que se ejecuta cuando se da click al boton aceptar agregar establecimiento </summary>
        /// <param name="sender">Objeto que generó el evento.</param>
        /// <param name="e">Argumento del evento.</param>
        protected void BtnAceptarAgregarEstablecimiento(object sender, EventArgs e)
        {
            _presentador.MostrarConfirmacion();
        }


        /// <summary> Metodo que se ejecuta cuando se da click al boton regresar en la vista de confirmacion </summary>
        /// <param name="sender">Objeto que generó el evento.</param>
        /// <param name="e">Argumento del evento.</param>
        protected void BtnRegresarClick(object sender, EventArgs e)
        {
            mvPanelAgregarEstablecimiento.SetActiveView(vAgregarEstablecimiento);
        }

        /// <summary> Metodo que acepta el agregar establecimiento. </summary>
        /// <param name="sender">Objeto que generó el evento.</param>
        /// <param name="e">Argumento del evento.</param>
        protected void AceptarConfirmacion(object sender, EventArgs e)
        {
            _presentador.AceptarConfirmacion();
        }

        /// <summary> Metodo que cancela la operacion de agregar establecimeinto en el primer view. </summary>
        /// <param name="sender">Objeto que generó el evento.</param>
        /// <param name="e">Argumento del evento.</param>
        protected void BtnCancelarAgregarEstablecimiento(object sender, EventArgs e)
        {
            Response.Redirect("~/Default.aspx");
        }

        /// <summary> Metodo que acepta que se haya agregado un establecimiento exitosamente </summary>
        /// <param name="sender">Objeto que generó el evento.</param>
        /// <param name="e">Argumento del evento.</param>
        protected void BtnAceptarOperacion(object sender, EventArgs e)
        {
            Response.Redirect("~/Default.aspx");
        }

        /// <summary> Metodo que acepta que se haya agregado un establecimiento exitosamente </summary>
        /// <param name="sender">Objeto que generó el evento.</param>
        /// <param name="e">Argumento del evento.</param>
        protected void BtnRegresarEstadoFinal(object sender, EventArgs e)
        {
            mvPanelAgregarEstablecimiento.SetActiveView(vAgregarEstablecimiento);
        }
        #endregion

        #region Propiedades

        /// <summary> Control que maneja los views de la interfaz </summary>
        public MultiView Paneles
        {
            get { return mvPanelAgregarEstablecimiento; }
        }


        /// <summary> View que maneja el contenido de agregar establecimiento en su primera fase </summary>
        public View VAgregarEstablecimiento
        {
            get { return vAgregarEstablecimiento; }
        }


        /// <summary> Propiedad que retorna el control para manejar los tipos de establecimientos </summary>
        public DropDownList DdlTipoEstablecimiento
        {
            get { return ddlTipoEstablecimiento; }
        }


        /// <summary> Propiedad que retorna el control donde se indica el numero del establecimiento </summary>
        public TextBox TbNumeroLocal
        {
            get { return tbNumeroLocal; }
        }


        /// <summary> Propiedad que retorna el control donde se indica el precio del establecimiento</summary>
        public TextBox TbPrecio
        {
            get { return tbPrecio; }
        }


        /// <summary> Propiedad que retorna el control donde se indica la direccion del establecimiento </summary>
        public TextBox TbDireccion
        {
            get { return tbDireccion; }
        }


        /// <summary> View en donde se muestra la informacion del establecimiento que esta por agregarse. </summary>
        public View VConfirmacion
        {
            get { return vConfirmacion; }
        }


        /// <summary> Propiedad que retorna el control que muestra el  establecimiento en la confirmacion </summary>
        public Label LblTipoEstablecimientoConfirmacion
        {
            get { return lblTipoEstablecimientoConfirmacion; }
        }


        /// <summary> Propiedad que retorna el control que muestra el numero del establecimiento en la confirmacion </summary>
        public Label LbNumeroLocalConfirmacion
        {
            get { return lblNumeroDeLocalConfirmacion; }
        }


        /// <summary> Propiedad que retorna el control que muestra el precio del establecimiento en la confirmacion </summary>
        public Label LbPrecioConfirmacion
        {
            get { return lblPrecioLocalConfirmacion; }
        }


        /// <summary> Propiedad que retorna el control que muestra la direccion del establecimiento en la confirmacion </summary>
        public Label LbDireccionConfirmacion
        {
            get { return lblDireccionConfirmacion; }
        }


        /// <summary> View en donde se maneja el mensaje de exito </summary>
        public View VMensajeExito
        {
            get { return vMensajeExito; }
        }


        /// <summary> View donde se maneja que hubo un fallo en el agregar establecimiento </summary>
        public View VMensajeError
        {
            get { return vMensajeError; }
        }


        #endregion
        
    }
}